#wm withdraw .; wm withdraw .output; kons_font 13 # tylko pod konsola2c #lappend auto_path ~/tcl/tclws ~/tcl/tcllib # niepotrzebne, jesli uruchamiac przez tclkit_2 # ten przyklada zawiera typ "rekurencyjny" mojTyp2 # tj. zawiera pole "nast" wskazujace na siebie samego... # package re WS::Server package re WS::Embeded #% 2.3.0 ::WS::Server::Service -mode embedded -service qqq -ports 30000 # def typu "mojTyp" WS::Utils::ServiceTypeDef Server qqq mojTyp { a {type string} b {type int} } # def typu "mojTyp2", # ktory zawiera pole "nast" (do budowania list !!!) # przyklad uzycia: proc met2a WS::Utils::ServiceTypeDef Server qqq mojTyp2 { a {type float} nast {type mojTyp2} } ::WS::Server::ServiceProc qqq {met2 {type mojTyp()}} { liczbaElem {type int} } {zwraca sekwencje struktur typu mojTyp} { set w {} for {set i 0} {$i<$liczbaElem} {incr i} { lappend w [list a "a ku ku ($i)" b $i] } return [list met2Result $w] } # proc met2a zwraca liste zbudowana z mojTyp2... # + prosze zwrocic uwage na sposob konczenia tej listy !! # (nie ma pola nast) ::WS::Server::ServiceProc qqq {met2a {type mojTyp2}} { } {zwraca liste ???} { return [list met2aResult {a 1 nast {a 2 nast {a 3}}}] } ::WS::Server::ServiceProc qqq {razyDwa {type int()}} { par1 {type int() comment {ciag liczb int}} } {mnozy elementy ciagu razy 2} { set w {} foreach e $par1 {lappend w [expr {$e*2}]} return [list razyDwaResult $w] } ::WS::Embeded::Listen 30000 vwait abc